//
//  YJMNweCharacteristicsController.swift
//  Weibo
//
//  Created by 杨军民 on 16/7/22.
//  Copyright © 2016年 杨军民. All rights reserved.
//

import UIKit
import SnapKit
import SDWebImage

/*
1、先把根控制器设置为新特性控制器
2、懒加载控件
3、推荐UI界面
a、控制器添加子控件
b、对子控件约束(使用第三方框架约束:SnapKit)
c、对头像先切成圆角
1）、方法：先看图片多大，然后除以2，然后在拿到除以一半的图片的半径就是图片的一般是多少设置为圆角的半径
4、设置头像动画:使用(UIView.animateWithDuration)
a、获取appDelegate
b、核心动画修改头像的编移值实现
5、添加两个按钮
a、两个状态，以图片显示
6、创建UICollectionViewController设置4个cell的数量
7、当头像显示出来的时候就跳转界面

8.0、在YJMUserAccountViewModel获取用户的头像和名称的时候添加错误的返回值，并且在发送请求的时候告诉他人获取数据成功或失败(打印)
8、在获取用户的信息之前先显示一次用户的头像，这样就不会造成因网络差导致加载头像的时候显示空白难看
9、获取用户的信息 (因为有多处用到设置头像，所以抽取设置头像的方法)
a、打印获取数据失败
b、获取数据成功的时候显示用户的头像
10、当加载用户头像的时候就会头像会先的很大，没有圆角，因为没有约束其的高度和宽度，也可以设置其size，还有就是设置圆角的样式

*/

class YJMNweCharacteristicsController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        setUpUI()
        
        //获取用户信息之前先显示一次用户头像
        self.setIcon()
        
        //获取用户信息
        YJMUserAccountViewModel.sharedUserAccountViewModel.loadUserInfo { (error) ->() in
           //当error不为空的时候获取数据失败
            if error != nil {
                print("获取数据失败")
                return
            }
            //获取数据成功
            self.setIcon()
        }
    }
    
    //设置头像
    private func setIcon() {
        
        if let avatar_large = YJMUserAccountViewModel.sharedUserAccountViewModel.userAccount?.avatar_large {
            let url = NSURL (string: avatar_large)
           self.iconView.sd_setImageWithURL(url, placeholderImage: UIImage(named: "avatar_default_big"))
        }
    }
    
    override func viewDidAppear(animated: Bool) {
        //设置头像动画
        super.viewDidAppear(animated)
        startAnimation()
    }
    
    //头像动画
    private func startAnimation() {
       //设置编移植
        let offset = -(UIScreen.mainScreen().bounds.height - 160)
        
        //修改约束
        iconView.snp_updateConstraints { (make) -> Void in
            make.bottom.equalTo(self.view).offset(offset)
        }
        //设置动画时间
//        UIView.animateWithDuration(0.25) { () -> Void in
//            self.view.layoutIfNeeded()
//        }
        UIView.animateWithDuration(1, delay: 0.2, usingSpringWithDamping: 0.75, initialSpringVelocity: 7, options: UIViewAnimationOptions(rawValue: 0), animations: {() -> Void in
            //布局
            self.view.layoutIfNeeded()
            
        }) {(_) -> Void in
            print("动画完成")
           UIView.animateWithDuration(DefaultAnimtionDuration, animations: { () -> Void in
            
            self.welcomeLabel.alpha = 1
            
            }, completion: { (_) -> Void in
                //切换界面
                AppDelegate.switchRootViewController(YJMMainTableViewController())
           })
        }
    }
    
    //MARK: - 推荐UI界面(不希望他人改动)
    private func setUpUI() {
        
        //添加子控件
        self.view .addSubview(backImage)
        self.view .addSubview(iconView)
        self.view .addSubview(welcomeLabel)
        
        //背景图片约束
        backImage.snp_makeConstraints { (make) -> Void in
            make.leading.equalTo(self.view)
            make.top.equalTo(self.view)
            make.trailing.equalTo(self.view)
            make.bottom.equalTo(self.view)
        }
        
        //头像约束
        iconView.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(self.view)
            make.bottom.equalTo(self.view).offset(-160)
            make.size.equalTo(CGSize(width: 85, height: 85))
        }
        
        //欢迎文本约束
        welcomeLabel.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(self.view)
            make.top.equalTo(iconView.snp_bottom).offset(16)
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    //MARK: - 懒加载控件
    ///背景图片
    private lazy var backImage : UIImageView = UIImageView (image: UIImage(named: "ad_background"))
    
    ///头像
    private lazy var iconView: UIImageView = {
        
     let image =  UIImageView (image: UIImage(named: "avatar_default_big"))
        
        //设置圆角
        image.layer.cornerRadius = 42.5
        image.layer.masksToBounds = true
        image.contentMode = UIViewContentMode.ScaleAspectFill
        
        return image
    }()
    //打钩按钮
    private lazy var selectButton : UIButton = {
       let button = UIButton()
        
        
        return button
    }()
    
    ///欢迎文本
    private lazy var welcomeLabel : UILabel = {
       let label = UILabel()
        
        //设置属性
        label.text = "欢迎归来";
        //设置字体大小
        label.font = UIFont.systemFontOfSize(15)
        //自动布局
        label.sizeToFit()
        //
        label.alpha = 0
        
        return label
    }()
   
}
